package com.gitee.wsl.android.ext.store

import com.gitee.wsl.android.ext.ApplicationInit.application
import com.gitee.wsl.android.file.FileManager.copyFile
import java.io.File


object DatabaseExt {

    /**
     * 获取应用内部存储数据库路径 ( path /data/data/package/databases )
     * @return /data/data/package/databases
     */
    fun getAppDbsPath(): File {
        return application.dataDir
    }

    /**
     * 获取应用内部存储数据库路径 ( path /data/data/package/databases/name )
     * @param name 数据库名
     * @return /data/data/package/databases/name
     */
    fun getAppDbPath(name: String): File? {
        return application.getDatabasePath(name)
    }

    /**
     * 导出数据库
     * @param targetFile 目标文件
     * @param dbName     数据库名
     * @param overlay    如果目标文件存在, 是否覆盖
     * @return `true` success, `false` fail
     */
    fun startExportDatabase(
        targetFile: String,
        dbName: String,
        overlay: Boolean
    ): Boolean {
        val file= getAppDbPath(dbName) ?:return false
        return copyFile(file.inputStream(), targetFile, overlay)
    }

    /**
     * 导入数据库
     * @param srcFilePath  待复制的文件地址
     * @param destFilePath 目标文件地址
     * @param overlay      如果目标文件存在, 是否覆盖
     * @return `true` success, `false` fail
     */
    fun startImportDatabase(
        srcFilePath: String,
        destFilePath: String,
        overlay: Boolean
    ): Boolean {
        return copyFile(srcFilePath, destFilePath, overlay)
    }

}